﻿/* 自定义的XZone的通用热键模块,最后导出MyXZone_setHotkeys()函数,执行该函数才会使用热键设定
  By setycyas @2022-11-15
*/

/* 全局变量 
*/
global __MyXZone_KeyA := "d" ;A键设定,用于连发
global __MyXZone_autoFireKey := "x" ;触发连发的键

/* 内部函数定义 
*/

;热键生效切换,用于打字交流
__MyXZone_suspendToggle(){
   Suspend, Toggle
}

;静音切换
__MyXZone_soundToggle(){
  SoundSet, +1, , Mute ;说明书里面的实例,切换静音状态
}

;连发
__MyXZone_autoFire(){
  while (GetKeyState(__MyXZone_autoFireKey)) {
    send, {%__MyXZone_KeyA% down}
    sleep, 10
    send, {%__MyXZone_KeyA% up}
    sleep, 10
  }
}

;使X-Zone变成活动窗口
__MyXZone_active(){
  WinActivate, ahk_exe X_Zone.exe
}

/* 导出函数MyXZone_setHotkeys(),使用则设定热键,
  keyA设定A键,autoFireKey设定A键的连发键,hasWinActiveHotkey决定是否启用一键使X-Zone变成活动窗口的功能
*/
MyXZone_setHotkeys(keyA := "d", autoFireKey := "x", hasWinActiveHotkey := +1){
  __MyXZone_KeyA := keyA ;设置全局变量的A键
  __MyXZone_autoFireKey := autoFireKey ;设置全局变量的连发键
  ;如果启用一键使X-Zone变成活动窗口,则绑定到numpad2
  if (hasWinActiveHotkey) {
    Hotkey, ~numpad2, __MyXZone_active
  }
  ;设置X-Zone热键
  Hotkey, IfWinActive, ahk_exe X-Zone.exe
  Hotkey, ~numpad0, __MyXZone_suspendToggle ;热键中断切换
  Hotkey, ~numpad1, __MyXZone_soundToggle ;静音切换
  Hotkey, ~%__MyXZone_autoFireKey%, __MyXZone_autoFire ;连发
  Hotkey, IfWinActive
}